﻿using System;
using System.Collections.Generic;
using Acaweb.Data.Contracts;
using Acaweb.Model.Entities;
using Acaweb.Model.Entities.DatosCompuestos;
using Spring.Transaction.Interceptor;
using System.Linq;

namespace Acaweb.Data.Dao.NHibernate
{
    public class CursosMatriculadosDao : HibernateDao<CursosMatriculados, CursosMatriculadosPk>, ICursosMatriculadosDao
    {
        [Transaction(ReadOnly = true)]
        public IList<CursosMatriculados> GetAll()
        {
            return GetAll<CursosMatriculados>();
        }

        public void Delete(CursosMatriculadosPk obj)
        {
            this.Delete(obj);
        }

        public IList<CursosMatriculados> GetByCurso(CursoPk Curso)
        {
            return this.Session.QueryOver<CursosMatriculados>().Where(t => t.CursoMatriculadoPk.Ano == Curso.Ano && 
                t.CursoMatriculadoPk.CodigoMateria == Curso.CodigoMateria &&
                t.CursoMatriculadoPk.CodigoPlan == Curso.CodigoPlan && t.CursoMatriculadoPk.Grupo == Curso.Grupo &&
                t.CursoMatriculadoPk.Periodo == Curso.Periodo &&
                t.CursoMatriculadoPk.Semestre == Curso.Semestre).List().Where(t => t.Curso != null).ToList();
        }


        public IList<CursosMatriculados> GetByEstudiante(int Estudiante)
        {
            return this.Session.QueryOver<CursosMatriculados>().Where(t => t.CursoMatriculadoPk.CodigoEstudiante == Estudiante).List().Where(t => t.Curso != null).ToList();
        }

        public IList<CursosMatriculados> GetByEstudiante(int Estudiante, PeriodoAcademico PeriodoAcademico)
        {
            return this.Session.QueryOver<CursosMatriculados>().Where(t => t.CursoMatriculadoPk.CodigoEstudiante == Estudiante && t.CursoMatriculadoPk.Ano == PeriodoAcademico.Ano && t.CursoMatriculadoPk.Periodo == PeriodoAcademico.Periodo).List().Where(t => t.Curso != null).ToList();
        }
    }
}